using UniversalAdminSystem.Domian.Core.Interfaces;
using UniversalAdminSystem.Domian.Core.ValueObjects;
using UniversalAdminSystem.Domian.FileStorage.ValueObjects;

namespace UniversalAdminSystem.Domian.FileStorage.IRepository;

public interface IFileRepository : IRepository<Aggregates.File>
{
    Task<IEnumerable<Aggregates.File>> GetByOwnerAsync(UserId ownerId);
    Task<IEnumerable<Aggregates.File>> GetByParentAsync(FileId? parentId);
    Task<IEnumerable<Aggregates.File>> GetByTypeAsync(FileType type);
    Task<IEnumerable<Aggregates.File>> GetFilesWithAccessAsync(UserId userId, FileAccessLevel accessLevel);
    Task<IEnumerable<Aggregates.File>> GetAllFoldersAsync(UserId ownerId);
}
